﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ServiceModel.Channels;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EventoWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;

namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ClienteVerListaDeConvidadosEventos : System.Web.UI.Page
    {
        ObjetoCliente cliente = new ObjetoCliente();
        ObjetoConvite[] listaEventosConvitesAceitos;
        ObjetoConvite[] listaEventosConvitesPendentes;
        ObjetoConvite[] listaEventosConvitesRecusados;

        PubClub_Evento_WS webServiceEventos = new PubClub_Evento_WS();
        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        ObjetoEvento evento;
        



        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Cliente"] == null)
            {
                Response.Redirect("Login.aspx");
            }
            else
            {
                cliente = webServiceCliente.GetCliente(Convert.ToInt32(Session["Cliente"]));

            }

            if (Request.QueryString["VerListaDeConvidadosEventoID"] != null)
            {
                int idEvento = Convert.ToInt32(Request.QueryString["VerListaDeConvidadosEventoID"]);
                evento = webServiceEventos.GetEvento(idEvento);

                listaEventosConvitesAceitos = webServiceEventos.MeusEventosConvidados(2, idEvento);
                listaEventosConvitesPendentes = webServiceEventos.MeusEventosConvidados(3, idEvento);
                listaEventosConvitesRecusados = webServiceEventos.MeusEventosConvidados(1, idEvento); ;

            }

            if (listaEventosConvitesAceitos.Count() == 0 && listaEventosConvitesPendentes.Count() == 0 && listaEventosConvitesRecusados.Count() == 0)
            {
                labelAviso.Text = "Você não convidou nínguem pra esse evento.";
                labelAviso.Visible = true;
                
            }
            else
            {
                labelAviso.Visible = false;
                labelCount.Visible = true;


                TableHeaderRow linhaCabecalho = new TableHeaderRow();
                TableHeaderCell celulaCabecalhoNomeDoConvidado = new TableHeaderCell();
                TableHeaderCell celulaCabecalhoSatusDoConvite = new TableHeaderCell();
                TableHeaderCell celulaCabecalhoNomeDoEvento = new TableHeaderCell();

                Label labelCabecalhoNomeDoConvidado = new Label();
                Label labelCabecalhoSatusDoConvite = new Label();
                Label labelCabecalhoNomeDoEvento = new Label();

                labelCabecalhoNomeDoEvento.Text = "Evento";
                celulaCabecalhoNomeDoEvento.Controls.Add(labelCabecalhoNomeDoEvento);
                linhaCabecalho.Cells.Add(celulaCabecalhoNomeDoEvento);

                labelCabecalhoNomeDoConvidado.Text = "Convidado";
                celulaCabecalhoNomeDoConvidado.Controls.Add(labelCabecalhoNomeDoConvidado);
                linhaCabecalho.Cells.Add(celulaCabecalhoNomeDoConvidado);

                labelCabecalhoSatusDoConvite.Text = "Status do convite";
                celulaCabecalhoSatusDoConvite.Controls.Add(labelCabecalhoSatusDoConvite);
                linhaCabecalho.Cells.Add(celulaCabecalhoSatusDoConvite);

                tabelaListaConvidades.Rows.Add(linhaCabecalho);

                foreach (var item in listaEventosConvitesAceitos)
                {
                    TableRow linhaNome = new TableRow();


                    TableCell celulaNomeDoEvento = new TableCell();
                    Label labelNomeDoEvento = new Label();

                    TableCell celulaNome = new TableCell();
                    Label labelNome = new Label();

                    TableCell celulaStatus = new TableCell();
                    Label labelStatus = new Label();

                    labelNomeDoEvento.Text = webServiceEventos.GetEvento(item.EventoId).Titulo;
                    celulaNomeDoEvento.Controls.Add(labelNomeDoEvento);
                    linhaNome.Cells.Add(celulaNomeDoEvento);

                    ObjetoCliente convidado = webServiceCliente.GetCliente(item.ClienteId);
                    labelNome.Text = convidado.Nome;
                    celulaNome.Controls.Add(labelNome);
                    linhaNome.Cells.Add(celulaNome);

                    labelStatus.Text = "Aceito";
                    labelStatus.ForeColor = System.Drawing.Color.Green;
                    celulaStatus.Controls.Add(labelStatus);
                    linhaNome.Cells.Add(celulaStatus);
                    tabelaListaConvidades.Rows.Add(linhaNome);
                }

                foreach (var item in listaEventosConvitesPendentes)
                {

                    TableRow linhaNome = new TableRow();

                    TableCell celulaNomeDoEvento = new TableCell();
                    Label labelNomeDoEvento = new Label();

                    TableCell celulaNome = new TableCell();
                    Label labelNome = new Label();

                    TableCell celulaStatus = new TableCell();
                    Label labelStatus = new Label();


                    labelNomeDoEvento.Text = webServiceEventos.GetEvento(item.EventoId).Titulo;
                    celulaNomeDoEvento.Controls.Add(labelNomeDoEvento);
                    linhaNome.Cells.Add(celulaNomeDoEvento);

                    ObjetoCliente convidado = webServiceCliente.GetCliente(item.ClienteId);
                    labelNome.Text = convidado.Nome;
                    celulaNome.Controls.Add(labelNome);
                    linhaNome.Cells.Add(celulaNome);

                    labelStatus.Text = "Pendente";
                    labelStatus.ForeColor = System.Drawing.Color.Gray;
                    celulaStatus.Controls.Add(labelStatus);
                    linhaNome.Cells.Add(celulaStatus);
                    tabelaListaConvidades.Rows.Add(linhaNome);
                }

                foreach (var item in listaEventosConvitesRecusados)
                {
                    TableRow linhaNome = new TableRow();

                    TableCell celulaNomeDoEvento = new TableCell();
                    Label labelNomeDoEvento = new Label();

                    TableCell celulaNome = new TableCell();
                    Label labelNome = new Label();

                    TableCell celulaStatus = new TableCell();
                    Label labelStatus = new Label();

                    labelNomeDoEvento.Text = webServiceEventos.GetEvento(item.EventoId).Titulo;
                    celulaNomeDoEvento.Controls.Add(labelNomeDoEvento);
                    linhaNome.Cells.Add(celulaNomeDoEvento);

                    ObjetoCliente convidado = webServiceCliente.GetCliente(item.ClienteId);
                    labelNome.Text = convidado.Nome;
                    celulaNome.Controls.Add(labelNome);
                    linhaNome.Cells.Add(celulaNome);

                    labelStatus.Text = "Recusado";
                    labelStatus.ForeColor = System.Drawing.Color.Red;
                    celulaStatus.Controls.Add(labelStatus);
                    linhaNome.Cells.Add(celulaStatus);
                    tabelaListaConvidades.Rows.Add(linhaNome);
                }
            }
            labelCount.Text = "Total de convidados: "+Convert.ToInt32(listaEventosConvitesAceitos.Count()+
                listaEventosConvitesPendentes.Count()+listaEventosConvitesRecusados.Count())+
                " | Aceitos: "+listaEventosConvitesAceitos.Count()+
                " | Pendentes: "+listaEventosConvitesPendentes.Count()+
                " | Recusados: "+listaEventosConvitesRecusados.Count();
        }
    }
}